package com.fantastic.web.util;

import com.alipay.api.domain.ExtendParams;
import com.alipay.api.domain.GoodsDetail;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;

/**
 * @author: rxx
 * @since: 2024/6/19 08:52
 * @description: 调用支付宝接口所需要传递的参数封装在此类
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AlipayParam {
    /**
     * 【描述】商户网站唯一订单号。
     * 由商家自定义，64个字符以内，仅支持字母、数字、下划线且需保证在商户端不重复。
     * 【示例值】70501111111S001111119
     * out_trade_no
     * 必选
     */
    private String outTradeNo;
    /**
     * 【描述】订单总金额，单位为元，精确到小数点后两位，取值范围[0.01,100000000]，金额不能为0
     * 【示例值】9.00
     * total_amount
     * 必选
     */
    private BigDecimal totalAmount;
    /**
     * 【描述】订单标题。
     * 注意：不可使用特殊字符，如 /，=，& 等。
     * 【示例值】大乐透
     * subject
     * 必选
     */
    private String subject;
    /**
     * 销售产品码
     */
    private String productCode;
    /**
     * 订单包含的商品列表信息
     */
    private GoodsDetail[] goodsDetail;
    /**
     * 绝对超时时间，格式为yyyy-MM-dd HH:mm:ss
     */
    private String timeExpire;
    /**
     * 业务扩展参数
     */
    private ExtendParams extendParams;
    /**
     * 公用回传参数，如果请求时传递了该参数，则返回给商户时会回传该参数。
     * 支付宝只会在同步返回（包括跳转回商户网站）和异步通知时将该参数原样返回。
     * 本参数必须进行UrlEncode之后才可以发送给支付宝。
     */
    private String passBackParams;
    /**
     * 支付状态
     */
    private String tradeStatus;

}
